#include "sem.hpp"
#include<sys/wait.h>

int main()
{
    SemaphoreBulider s;
    auto fsem = s.SetVal(1).Build(BUILD_SEM);

    pid_t pid = fork();
    if (pid == 0)
    {
        auto csem = s.Build(GET_SEM);
        int cnt = 10;
        while (cnt--)
        {
            csem->P();
            printf("C");
            fflush(stdout);
            sleep(1);
            printf("C");
            fflush(stdout);
            csem->V();
        }
    }

    int cnt = 20;
    while (cnt--)
    {
        fsem->P();
        printf("F");
        fflush(stdout);
        sleep(1);
        printf("F");
        fflush(stdout);
        fsem->V();
    }


    waitpid(pid,nullptr,0);

    return 0;
}